//package com.competition.web.admin.controller;
//
//import java.util.List;
//
//import javax.annotation.Resource;
//import javax.servlet.http.HttpServletRequest;
//
//import org.springframework.http.ResponseEntity;
//import org.springframework.validation.annotation.Validated;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import com.admin.param.contract.IStaffAddParam;
//import com.admin.vo.StaffVO;
//import com.basic.service.contract.IBaseService;
//import com.competition.param.impl.StaffAddParam;
//import com.competition.param.impl.StaffBySearchParam;
//import com.competition.param.impl.StaffUpdateParam;
//import com.competition.web.admin.config.HttpRequest;
//import com.competition.web.admin.service.IRegionService;
//import com.competition.web.admin.service.IStaffService;
//import com.competition.web.entity.GeoCodes;
//import com.competition.web.entity.GeoRegeo;
//import com.competition.web.entity.Region;
//import com.competition.web.entity.Staff;
//import com.controller.base.AbstractCommonController;
//import com.msg.ResponseCode;
//import com.response.vo.ResponseModel;
//
//@RestController
//@RequestMapping("staff")
//public class StaffController extends AbstractCommonController<Staff, StaffBySearchParam> {
//	private IStaffService service;
//
//	private IRegionService regionService;
//
//	private HttpRequest httpRequest;
//
//	public StaffController(IStaffService service) {
//		this.service = service;
//	}
//
//	/**
//	 * 添加
//	 * 
//	 * @param <V>
//	 * @param param
//	 * @return
//	 */
//	@PostMapping("/add")
//	public ResponseModel<Integer> insert(@RequestBody @Validated StaffAddParam param,
//			HttpServletRequest httpServletRequest) {
//
//		Region region = this.regionService.getDataById(param.getCityId());
//
//		String cityName = region.getName();
//
//		if (null == cityName) {
//			return ResponseModel.<Integer>errorMsg(0, ResponseCode.ERROR);
//		}
//		
//		param.setCityName(cityName);
//		
//		region = this.regionService.getDataById(param.getAreaId());
//		
//		param.setAreaName(region.getName());
//		
//		
//		paeseLocation(param);
//
//		int id = this.service.parseInsert(param, Staff.class);
//
//		return ResponseModel.<Integer>success(id);
//	}
//
//	private void paeseLocation(IStaffAddParam param) {
//
//		// 获取经纬度
//		GeoRegeo geoRegeo = httpRequest.getSync(param.getHomeAddress(), param.getCityName(), GeoRegeo.class);
//
//		if (null == geoRegeo) {
//			throw new Error(ResponseCode.NOT_FOUND_ADDRESS.getMsg());
//		}
//		
//		List<GeoCodes> codes = geoRegeo.getGeocodes();
//
//		if (null == codes) {
//			throw new Error(ResponseCode.NOT_FOUND_ADDRESS.getMsg());
//		}
//		
//		GeoCodes first = codes.get(0);
//		
//
//		String longitude = first.getLocation();
//
//		String[] longitudes = longitude.split(",");
//		
//		param.setLongitude(Double.valueOf(longitudes[0]));
//		
//		param.setLatitude(Double.valueOf(longitudes[1]));
//
//	}
//
//	@Override
//	protected IBaseService<Staff> getBaseService() {
//		return this.service;
//	}
//
//	/**
//	 * 添加
//	 * 
//	 * @param <V>
//	 * @param param
//	 * @return
//	 */
//	@PostMapping("/update")
//	public ResponseModel<Integer> update(@Validated @RequestBody StaffUpdateParam param,
//			HttpServletRequest httpServletRequest) {
//
//		Region region = this.regionService.getDataById(param.getCityId());
//
//		String cityName = region.getName();
//
//		if (null == cityName) {
//			return ResponseModel.<Integer>errorMsg(0, ResponseCode.ERROR);
//		}
//
//		param.setCityName(cityName);
//		
//		region = this.regionService.getDataById(param.getAreaId());
//		
//		param.setAreaName(region.getName());
//		
//		paeseLocation(param);
//
//		int res = this.service.parseUpdate(param, Staff.class);
//		return ResponseModel.<Integer>success(res);
//	}
//
//	protected <VO> Class<VO> getTarget() {
//		return (Class<VO>) StaffVO.class;
//	}
//
//	@Resource
//	public void setRegionService(IRegionService regionService) {
//		this.regionService = regionService;
//	}
//
//	@Resource
//	public void setHttpRequest(HttpRequest httpRequest) {
//		this.httpRequest = httpRequest;
//	}
//}